package com.weaving.monitor.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 物料布种类型数据访问层接口
 * 
 * 功能说明：
 * 1. 定义与mat_cloth_type表交互的数据库操作方法
 * 2. 提供根据机器ID查询下轮计划信息的功能
 * 
 * 注解说明：
 * - @Mapper: MyBatis注解，标识这是一个Mapper接口
 * 
 * 方法说明：
 * - selectNextPlanByMachineId: 根据机器ID查询下轮计划信息
 * 
 * @author 系统开发团队
 * @version 1.0
 * @since 2024-01-01
 */
@Mapper
public interface MatClothTypeMapper {
    
    /**
     * 根据机器ID查询下轮计划信息
     * 
     * 功能说明：
     * 1. 通过机器ID查询对应的下轮计划信息
     * 2. 实现复杂的关联查询逻辑
     * 
     * 查询逻辑：
     * 1. 首先通过机器ID查询prod_prod_card表获取order_id
     * 2. 然后通过order_id查询prod_prod_order表获取mat_type_id
     * 3. 最后通过mat_type_id查询mat_cloth_type表获取name
     * 4. 按sort升序排列，取第一条记录
     * 
     * 参数说明：
     * - machineId: 机器ID，如"J001"
     * 
     * 返回值说明：
     * - String: 布种类型名称，对应下轮计划
     * - null: 如果未找到对应的记录
     * 
     * SQL说明：
     * - 子查询1：从prod_prod_card表获取order_id
     * - 子查询2：从prod_prod_order表获取mat_type_id
     * - 主查询：从mat_cloth_type表获取name
     * - 排序：按sort升序
     * - 限制：取第一条记录
     * 
     * @param machineId 机器ID，如"J001"
     * @return 布种类型名称，查询失败时返回null
     */
    String selectNextPlanByMachineId(@Param("machineId") String machineId);
    
    /**
     * 根据机器ID查询当前生产物料类型
     * 
     * 功能说明：
     * 1. 通过机器ID查询当前正在生产的物料类型
     * 2. 实现复杂的关联查询逻辑
     * 
     * 查询逻辑：
     * 1. 首先通过机器ID查询prod_prod_card表获取order_id（状态为'1'）
     * 2. 然后通过order_id查询prod_prod_order表获取mat_type_id
     * 3. 最后通过mat_type_id查询mat_cloth_type表获取name
     * 4. 按sort升序排列，取第一条记录
     * 
     * 参数说明：
     * - machineId: 机器ID，如"J001"
     * 
     * 返回值说明：
     * - String: 布种类型名称，对应当前生产物料
     * - null: 如果未找到对应的记录
     * 
     * SQL说明：
     * - 子查询1：从prod_prod_card表获取order_id（status='1'）
     * - 子查询2：从prod_prod_order表获取mat_type_id
     * - 主查询：从mat_cloth_type表获取name
     * - 排序：按sort升序
     * - 限制：取第一条记录
     * 
     * @param machineId 机器ID，如"J001"
     * @return 布种类型名称，查询失败时返回null
     */
    String selectCurrentMatTypeByMachineId(@Param("machineId") String machineId);
} 